Virtual Network Functions (VNFs) may be managed on a network and provide a variety of network services or network microservices. Some existing VNFs are focused on achieving highest possible performance from a single instance, a strategy inherited from physical network appliances. Risk reduction and performance considerations, however, are driving a move towards fielding many identical VNF instances, each serving one or a few tenants, and each handling sub-Gbps range of traffic.
Many applications build on poll-mode interactions to implement efficient event-driven state-engine traversals. These methods can be used in solutions where anonymous threads perform run to completion procedures upon being triggered—to build complex services from flexible and dynamic interweaving of modular microservices. Transferring control across domains incurs considerable operating system overheads.
It may be desirable to run thousands of instances of such VNFs to provide lightweight web-services and microservices running in the cloud. However, for thin virtual machines (VMs) for microservices and VNFs that cannot afford to tie up whole central processing unit (CPU) in polling loops, at least two difficulties arise: 1) Scaling/Scheduling overheads (since pinning instances to CPUs leads to massive oversubscription), and 2) Polling—the thin VMs do not scale and cause significant drain of computing resources and power